Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

579
Vistas
El campo de formulario antifalsificación requerido "__RequestVerificationToken" no está presente

aquí hay otro obstáculo para mí, quiero que mi sitio permanezca protegido contra ataques entre sitios, estoy desarrollando un formulario maestro/detalle usando asp.net mvc 5 a través de la solicitud Ajax, entonces, para crear una entrada, tenemos que pasar por el proceso de solicitud de Ajax, de esta manera:

 $.ajax({ url: '/Sales/Create', data: JSON.stringify(salesmain), type: 'POST', contentType: 'application/json;', dataType: 'json', success: function (result) { if (result.Success == "1") { window.location.href = "/Sales/index"; } else { alert(result.ex); } } });

ahora, no está navegando a la acción Crear en el controlador de ventas, como dice la solicitud ajax, y antes de eso, arroja la siguiente excepción:

El campo de formulario antifalsificación requerido "__RequestVerificationToken" no está presente.

He buscado mucho en Google pero aún no he tenido éxito, es por eso que estoy aquí, he leído algunos blogs que dicen buscar el campo oculto __RequestVerificationToken usando jquery y agregarlo a los valores del formulario, adjuntando el JSON.stringify(salesmain) en una función, de esta manera:

 $.ajax({ . . addRequestVerificationToken(JSON.stringify(salesmain))

y la función:

 function addRequestVerificationToken(data) { data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val(); return data; };

Además, ya tengo la siguiente estructura de código:

 @using (Html.BeginForm()) { @Html.AntiForgeryToken() . .

y el atributo antes de la acción Crear:

 [HttpPost] [ValidateAntiForgeryToken] public JsonResult Create([Bind(Include = "SalesId,ReferenceNo,SalesDate,SalesPerson")] SalesMain salesMain) { . .

y también estoy usando jQuery 1.5, puede ser el culpable, si no, ¿qué debo hacer para resolver este problema? Cualquier AYUDA será muy apreciada, gracias de antemano :)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su función addRequestVerificationToken() no agrega el token porque ya ha clasificado los datos (ya no es un objeto javascript, por lo que data.__RequestVerificationToken = $(...) no hace nada).

Puede hacer que esto funcione cambiando el código a

 data: JSON.stringify(addRequestVerificationToken(salesmain)),

sin embargo, esto no es necesario ya que no necesita clasificar los datos. En su lugar, elimine la opción contentType: 'application/json;', para que use la application/x-www-form-urlencoded; charset=UTF-8' y uso

 data: addRequestVerificationToken(salesmain),

o mejor aún, si ha generado correctamente su vista usando los métodos HtmlHelper y sus entradas contienen el atributo de nombre correcto ( name="SalesId" , name="ReferenceNo" etc.), entonces simplemente use

 data: $('form').serialize(),`

que serializará correctamente todas las entradas en su formulario, incluido el token.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda